package gold.game;

public class SelectNum {

    /**
     * * 有这样一个数组，数字成组连续出现，且这几组数字不重复。比如[1,2,2,4,4,4,4]，如果某一组数字的数量刚好等于这组数字的值，则这个数字称为”天选数字“。比如上述例子中的1 2 4都是天选数字，因为1出现1次，2出现2次，4出现4次。
     * * 输入这样一个数组，求最大的天选数字。当没有天选数字的时候，返回-1.
     * * [1,2,2,4,4,4,4] -> 4
     * * [3,3,2,2,2] -> -1
     * * [5,5,5,5,5] -> 5
     *
     * @param arr
     * @return
     */
    public static int findMaxSelectNum(int[] arr) {
        int curtNum = -1, maxSelectNum = -1;
        for (int i = 0; i < arr.length; ) {
            curtNum = arr[i];
            if (i + curtNum - 1 < arr.length && arr[i + curtNum - 1] == curtNum && ((i + curtNum < arr.length && arr[i + curtNum] != curtNum) || i + curtNum >= arr.length)) {
                maxSelectNum = Math.max(maxSelectNum, curtNum);
                i += curtNum;
            } else {
                while (i < arr.length && arr[i] == curtNum) ++i;
            }
        }

        return maxSelectNum;
    }

    public static void main(String[] args) {
        int[] arr = {5, 5, 5, 5, 5};
        System.out.println(findMaxSelectNum(arr));

    }


}
